package com.rongmei.jdsync.controller;

import com.rongmei.jdsync.dto.BaseResponseDto;
import com.rongmei.jdsync.service.JdSupplierSyncService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @author dongjun
 */
@RestController
@RequestMapping("/api/jd/supplier")
@RequiredArgsConstructor
@Tag(name = "京东供应商接口", description = "京东供应商商品上下架接口")
public class JdSupplierSyncController {

    private final JdSupplierSyncService jdSupplierSyncService;

    /**
     * 更新商品/SKU上下架状态
     * 通过接收商品ID、SKU ID（可选）、商品状态和操作者信息来更新商品或SKU的上下架状态
     *
     * @param goodsId    商品ID，必填
     * @param skuId      SKU ID，可选。如果提供，则更新指定SKU的状态；如果不提供，则更新整个商品的状态
     * @param goodsState 商品状态，必填。通常使用整数值表示不同的状态，例如1表示上架，0表示下架
     * @param operator   操作者信息，通过请求头"X-Operator"传入，默认值为"system"
     * @return 返回一个BaseResponseDto对象，包含操作结果的相关信息
     */
    @PostMapping("/update-goods-state")
    @Operation(summary = "更新商品/SKU上下架状态", description = "通过接收商品ID、SKU ID（可选）、商品状态和操作者信息来更新商品或SKU的上下架状态")
    public BaseResponseDto<?> updateGoodsState(
            @Parameter(description = "商品ID，必填")
            @RequestParam Long goodsId,

            @Parameter(description = "SKU ID，可选。如果提供，则更新指定SKU的状态；如果不提供，则更新整个商品的状态")
            @RequestParam(required = false) Long skuId,

            @Parameter(description = "商品状态，必填。通常使用整数值表示不同的状态，例如1表示上架，0表示下架")
            @RequestParam Integer goodsState,

            @Parameter(description = "操作者信息，通过请求头\"X-Operator\"传入，默认值为\"jd\"")
            @RequestHeader(value = "X-Operator", defaultValue = "jd") String operator) {
        return jdSupplierSyncService.updateGoodsState(goodsId, skuId, goodsState, operator);
    }
}